

package entrega;
import java.io.*;
/**
 * Programa en el que se introducen 25 notas y 25 nombres de alumno y se 
 * muestran el número de alumnos con cada tipo de calificación (insuficiente, 
 * suficiente, bien,notable, sobresaliente) así como los alumnos con mejor y 
 * peor nota
 * El programa finaliza tras introducir las 25 calificaciones
 *   Autor:Fernando Ortega Gonzalez
 */

public class ejer2 
{//class ejer2
    
    public static void main(String args[])throws IOException
    {//main
        String alumno,alumnomejor = null, alumnopeor=null;
        int nota = 0,mayor=0,menor=10;
        String sobre=new String("");
        String notable=new String("");
        String bien=new String("");
        String sufi=new String("");
        String insu=new String("");
        boolean mal=true;
        for(int i=1;i<=5;i++)
        { //for
            nota=pedirNumero("Introduzca su nota\t",mal);
                alumno=pedirNombre("Introduzca el nombre del alumno\t");
                if(nota>8)
                {//sobresaliente
                    sobre=sobre.concat("*");
                }
                else
                {//no sobresaliente
                    if(nota>6)
                    {//notable
                        notable=notable.concat("*");
                    }//notable
                    else
                    {//no notable
                        if(nota==6)
                        {//bien
                            bien=bien.concat("*");
                        }//bien
                        else
                        {//no bien
                            if(nota==5)
                            {//suficiente
                                sufi=sufi.concat("*");
                            }//suficiente
                            else
                            {//insuficiente
                                insu=insu.concat("*");
                            }//insuficiente
                        }//no bien
                    }//no notable
                }//no sobresaliente
                if(nota>mayor)
                {//Comprueba si la nota actual es > que mayor
                    mayor=nota;
                    alumnomejor=alumno;
                }//Comprueba si la nota actual es > que mayor
                if(nota<menor)
                {//Comprueba si la nota actual es < que menor
                    menor=nota;
                    alumnopeor=alumno;
                }//Comprueba si la nota actual es < que mayor   
         }//for
         System.out.println("\t\tESTADÍSTICAS DE LAS NOTAS\n");
         System.out.println("Sobresaliente\t"+sobre);
         System.out.println("Notable\t\t"+notable);
         System.out.println("Bien\t\t"+bien);
         System.out.println("Suficiente\t"+sufi);
         System.out.println("Insuficiente\t"+insu);
         System.out.println("El alumno con mejor calificación es\t"+alumnomejor+"\tcon una nota de: "+mayor);
         System.out.println("El alumno con peor  calificación es\t"+alumnopeor+"\tcon una nota de: "+menor);
    
    }//main
    /**
     * * Metodo que recibe un mensaje y un booleano y devuelve un número entero
     * @param mensaje
     * @param mal
     * @return nombre
     * @throws IOException 
     */
    public static int pedirNumero(String mensaje,boolean mal)throws IOException
    {// Metodo pedirNumero
        int nota = 0;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        while(mal)
        {
            try
                {//Si meto un número
                 System.out.print(mensaje);//MENSAJE PASADO DESDE nota
                 nota=Integer.parseInt(teclado.readLine());
                           if(nota<0 || nota>10)
                            {//entre 0 y 10
                                   System.out.print("Introduczca una dentro de  rango (0-10)\t");
                               
                            }//entre 0 y 10
                            else
                           {
                               mal=false;
                           }
                }//Si meto un número
                catch(NumberFormatException ex)
                {//controla que introduzca letras y no números
                          System.out.println("No has introducido un número");  
                }//controla que introduzca letras y no números
        }
        return nota;//DEVUELVE EL NUMERO
    } // Metodo pedirNumero
    /**
     * Metodo que recibe un mensaje y devuelve una cadena de caracteres
     * @param mensaje
     * @return nombre
     * @throws IOException 
     */
    public static String pedirNombre(String mensaje)throws IOException
    {//método pedirNombre
        String nombre;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.print(mensaje);//MENSAJE LO HE PASADODESDE alumno
        nombre=(teclado.readLine());
        return nombre;//Devuelve la cadena nombre
    }//Método pedirNombre
}//class ejer2
